SET QUOTED_IDENTIFIER ON
GO
SET ANSI_NULLS ON
GO
CREATE Function [dbo].[FN_TCFACT_CAMB_Q03]  
/*------------------------------------------------------*/    
/*---- Empresa           : OFISIS S.A.              ----*/    
/*---- Cliente           : OFISIS S.A.              ----*/    
/*---- Nombre FU         : FU_TIPO_CAMB_Q03         ----*/    
/*---- Desarrollado por  : Julio Diestra            ----*/    
/*---- Fecha Creación    : 09/03/2003               ----*/    
/*---- Base de Datos     : SLQ Server               ----*/    
/*---- Versión           : 8.0                      ----*/    
/*------------------------------------------------------*/    
/*---Modificado 1 por     :                         ----*/  
/*---Fecha Modificación   :                         ----*/  
/*---Detalle Modificación :                         ----*/  
/*------------------------------------------------------*/    
/*---  Declare  @PRUEBA TD_NU_016_004  
       Select @PRUEBA = (SELECT dbo.FN_TCFACT_CAMB_Q03('EUR', 'SOL', 1000, 'SOL', 'DOL', 3.50, 1.2))  
       Select @PRUEBA       ---*/  
/*------------------------------------------------------*/    
 (   
  @ISCO_MONE_ORIG TD_VC_003,  
  @ISCO_MONE_DEST TD_VC_003,  
  @INIM_ORIG   TD_NU_016_004,  
  @ISCO_MONE_NACI TD_VC_003,  
  @ISCO_MONE_EXTR TD_VC_003,  
  @INFA_CAMB        TD_NU_015_006,   
  @INFA_CAMB_BASE   TD_NU_015_006 ) Returns Numeric(28,12)  
AS
Begin  
  Declare  
  @VSCO_MON1       TD_VC_003,  
  @VSCO_MONE_BAS1  TD_VC_003,  
  @VSTI_OPE1       TD_VC_001,  
  @VSCO_MON2       TD_VC_003,  
  @VSCO_MONE_BAS2  TD_VC_003,  
  @VSTI_OPE2       TD_VC_001,  
  
  @VNFA_CAMB_AUXI  TD_NU_015_006,  
  @VNIM_CONV       Numeric(28,12),  
  @VSCO_MONE_BASE  TD_VC_003       
  
  If @ISCO_MONE_ORIG != @ISCO_MONE_NACI And @ISCO_MONE_ORIG != @ISCO_MONE_EXTR  
 Begin  
   Select @VNFA_CAMB_AUXI = @INFA_CAMB   
   Select @INFA_CAMB = @INFA_CAMB_BASE  
   Select @INFA_CAMB_BASE = @VNFA_CAMB_AUXI  
 End  
  
 If @ISCO_MONE_DEST != @ISCO_MONE_NACI And @ISCO_MONE_DEST != @ISCO_MONE_EXTR  
 Begin  
   Select @VNFA_CAMB_AUXI = @INFA_CAMB   
   Select @INFA_CAMB = @INFA_CAMB_BASE  
   Select @INFA_CAMB_BASE = @VNFA_CAMB_AUXI  
 End  
  
  Select  @VNIM_CONV = @INIM_ORIG  
    
  If @ISCO_MONE_ORIG !=  @ISCO_MONE_DEST  
  Begin  
    ----  Recupero monedas  
    Select @VSCO_MON1 = t1.CO_MON1, @VSCO_MONE_BAS1 = t1.CO_MONE_BAS1,  
           @VSTI_OPE1 = t1.TI_OPE1, @VSCO_MON2 = t1.CO_MON2,  
           @VSCO_MONE_BAS2 = t1.CO_MONE_BAS2,@VSTI_OPE2 = TI_OPE2  
    From   TMCONV_MONE t1  
    Where  t1.CO_MONE_ORIG   = @ISCO_MONE_ORIG  
    And    t1.CO_MONE_DEST   = @ISCO_MONE_DEST   
  
    If IsNull(@INFA_CAMB,0) > 0  
    Begin  
      If @VSTI_OPE1 = 'M'  
        Select @VNIM_CONV  =  @VNIM_CONV * @INFA_CAMB  
      Else  
        Select @VNIM_CONV  =  @VNIM_CONV / @INFA_CAMB  
    End   
    Else  
      Select @VNIM_CONV = 0  
  
    ----- If existe segunda moneda para convertir  
    If Len(Ltrim(IsNull(@VSCO_MON2,''))) > 0 And  IsNull(@VNIM_CONV,0)> 0  
    Begin  
      If IsNull(@INFA_CAMB_BASE,0) > 0  
      Begin  
        If @VSTI_OPE2 = 'M'  
          Select @VNIM_CONV =  @VNIM_CONV * @INFA_CAMB_BASE  
        Else   
   Select @VNIM_CONV =  @VNIM_CONV / @INFA_CAMB_BASE  
      End   
      Else  
   Select @VNIM_CONV = 0  
    End  
  
  End  
    
  Return (IsNull(@VNIM_CONV,0))  
End  
/*----------------fin Funcion---------------------------*/

GO
